
/*

四、完整示例代码（整合多种数据类型）

#include <QCoreApplication>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QDataStream>
#include <QDebug>

#pragma pack(push, 1)
struct SensorData {
    quint8 id;
    float temp;
    qint16 pressure;
};
#pragma pack(pop)

bool initSerialPort(QSerialPort& serial) {
    serial.setPortName("COM3");
    serial.setBaudRate(QSerialPort::Baud9600);
    serial.setDataBits(QSerialPort::Data8);
    serial.setParity(QSerialPort::NoParity);
    serial.setStopBits(QSerialPort::OneStop);
    serial.setFlowControl(QSerialPort::NoFlowControl);

    if (serial.open(QIODevice::WriteOnly)) {
        qDebug() << "串口打开成功";
        return true;
    } else {
        qDebug() << "串口打开失败：" << serial.errorString();
        return false;
    }
}

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    QSerialPort serial;
    if (!initSerialPort(serial)) {
        return 1;
    }

    // 构造发送数据（字符串 + 整数 + 浮点数 + 结构体）
    QByteArray sendData;
    QDataStream out(&sendData, QIODevice::WriteOnly);
    out.setByteOrder(QDataStream::LittleEndian);

    // 1. 字符串
    QString str = "SensorData:";
    out << str;

    // 2. 整数
    quint16 deviceId = 0x0001;
    out << deviceId;

    // 3. 浮点数
    float voltage = 3.3f;
    out << voltage;

    // 4. 结构体
    SensorData data = {0x0A, 26.8f, 101200};
    out.writeRawData(reinterpret_cast<const char*>(&data), sizeof(SensorData));

    // 发送数据
    qint64 bytes = serial.write(sendData);
    serial.flush();
    if (bytes != -1) {
        qDebug() << "发送数据：" << sendData.toHex(' '); // 以十六进制打印发送内容
        qDebug() << "发送字节数：" << bytes;
    } else {
        qDebug() << "发送失败：" << serial.errorString();
    }

    serial.close();
    return a.exec();
}
*/
